﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ASPLanchonete.fabrica;
using ASPLanchonete.classes;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Linq;

namespace ASPLanchonete.controller
{
    public class FuncionarioController : IFuncionarioController
    {
        Fabrica fabrica = new Fabrica();
        public string Salvar(Funcionario funcionario)
        {
            return fabrica.Salva(funcionario);
        }

        public IList<Funcionario> Recuperar()
        {
            ISession sessao = fabrica.sessao();
            IList<Funcionario> funcionario = sessao.CreateCriteria<Funcionario>().List<Funcionario>();
            fabrica.fechaSessao();
            return funcionario;
        }


        public Funcionario PesquisarPorId(int id)
        {
            ISession sessao = fabrica.sessao();
            Funcionario funcionario = sessao.Query<Funcionario>().Where(a => a.Id == id)
                .Fetch(a => a.Cargo)
                .FirstOrDefault();
            fabrica.fechaSessao();
            return funcionario;
        }


        public IList<Funcionario> RecuperarAtivos()
        {
            ISession sessao = fabrica.sessao();
            IList<Funcionario> funcionario = sessao.Query<Funcionario>().Where(a => a.Ativo == true).ToList();
            fabrica.fechaSessao();
            return funcionario;
        }
    }
}